{{tag>programmation}}

----

====== SmartEiffel : Compilateur Eiffel GNU ======

**SmartEiffel** est un compilateur libre pour Eiffel, un langage purement orienté objet.


===== Compilation de SmartEiffel =====
Premièrement, vous aurez besoin d'installer une dépendance :
<code>sudo apt-get install build-essential freeglut3-dev</code>

Vous devez ensuite aller chercher l'archive source de SmartEiffel sur le site de [[https://gforge.inria.fr/frs/?group_id=184|SmartEiffel]] en sélectionnant le fichier "smarteiffel.tgz" sous "Nightly Snapshot" (La date de l'archive au moment où j'écris est 13/01/2009).

<note important>La version 2.3 (SmartEiffel-2-3.tgz) rencontre des problèmes avec la version 4.6 de gcc utilisée par Ubuntu 11.10 (oneiric) (problèmes d'optimisation avec l'option -O2).

Un tutoriel pour y remédier existe : http://administratosphere.wordpress.com/2009/07/17/installing-smarteiffel-in-ubuntu-jaunty/</note>

Ouvrez un terminal (Applications->Accessoires->Terminal), allez dans le répertoire dans lequel vous avez téléchargé l'archive et décompressez-la.
<code>
cd Répertoire_Contenant_l_archive
tar xvf smarteiffel.tgz
</code>

Rendez-vous dans le répertoire de SmartEiffel.
<code>
cd SmartEiffel
</code>

Tapez la commande de configuration :
<code>
./configure
</code>

<note>Il se peut qu'il y ait des erreurs à la fin du résultat, comme par exemple :
<code>
***********/!\ Warning /!\**************
This configure file is just for information !
It will analyze your system and warn you for missing dependences librairies.
It does not generate makefile or any other files.
***********/!\ Warning /!\**************
 
Headers :
vfork.h not found, please install it if you want build SmartEiffel correctly
 
Functions :
clock_gettime not found, please install it if you want build SmartEiffel correctly
 
#####################################
 
If they're no headers or functions which aren't found you can install SmartEiffel by typing make or make interactive.
 
Then type VerifyAndStripTools to complete the installation
</code>
Pas de panique, certains éléments ne sont pas indispensables au bon fonctionnement de la compilation. Cependant, si le résultat affiche plus d'erreurs que ci-dessus, c'est peut-être à cause de paquets manquants.
</note>

Lancez la compilation :
<code>
make
</code>

Après quelques minutes, il devrait s'afficher :
<code>
SmartEiffel Release 2.4 (svn snaphsot 9308) [????]

Generating configuration in /home/charly/.serc
    OK

Using the existing compile_to_c as bootstrap compiler

Building the compiler
compile.c: In function ‘basic_exec_posix_put_character’:-x c compile.c         
compile.c:446:8: attention : ignoring return value of ‘write’, declared with attribute warn_unused_result [-Wunused-result]
    OK

Building large tools (using the SmartEiffel parser and AST)
    OK

Building helper tools
    OK

Generating API docs
    OK

Done.
</code>

===== Installation de SmartEiffel =====

<note>La procédure qui va suivre a pour but d'installer le compilateur dans votre dossier personnel (pour les comptes ne disposant pas de privilèges administrateur).</note>

Dans un premier temps, créez un dossier .local/bin.
<code>
mkdir ~/.local/bin
</code>

Copiez les fichiers exécutables vers .local/bin en remplaçant "Chemin_vers_SmartEiffel".
<code>
cp -R Chemin_vers_SmartEiffel/bin/* ~/.local/bin
</code>

Modifiez le fichier .bashrc de votre dossier personnel :
<code>
gedit ~/.bashrc
</code>

Ajoutez-y les lignes suivantes à la fin du fichier :
<code>
# Les exécutables/scripts dans /home/username/.local/bin seront accessibles par ligne de commande
export PATH=$PATH:$HOME/.local/bin
</code>

Enfin, fermez les fenêtres de terminal pour que les changements soient effectués.

Vous pourrez désormais compiler vos fichiers *.e grâce à la commande :
<code>
compile -o Mon_executable Mon_fichier.e
</code>